package team.kirohuji.dao;

import java.util.List;
import java.util.Map;

/**
 * 基础Dao 通用的 基础 方法，其他dao继承，避免代码冗余
 * 
 * @param <T> 泛型类
 * @author kirohuji
 * @version 0.1
 */
public interface BaseDao<T> {

	/**
	 * 插入数据
	 * 
	 * @param t
	 *            对象
	 * @return int
	 */
	int save(T t);

	/**
	 * 更新数据
	 * 
	 * @param t
	 *            对象
	 * @return int
	 */
	int update(T t);

	/**
	 * 根据主键ID删除
	 * 
	 * @param id
	 *            主键
	 * @return int
	 */
	int delete(Object id);

	/**
	 * 根据条件批量删除
	 * 
	 * @param id
	 *            条件
	 * @return int
	 */
	int deleteBatch(Object[] id);

	/**
	 * 根据条件查询单条记录
	 * 
	 * @param id
	 *            条件
	 * @return T
	 */
	T queryObject(Object id);

	/**
	 * 根据不同条件 查询 数据
	 * 
	 * @param id
	 *            条件
	 * @return List
	 */
	List<T> queryList(Object id);

	/**
	 * 根据 不同 条件 分页查询
	 * 
	 * @param map
	 *            条件
	 * @return List
	 */
	List<T> queryList(Map<String, Object> map);

	/**
	 * 根据不同条件获取 总记录数据
	 * 
	 * @param map
	 *            条件
	 * @return int
	 */
	int queryTotal(Map<String, Object> map);

	/**
	 * 获取总记录数
	 * 
	 * @return int
	 */
	int queryTotal();
}
